# 设置常量 a=1, b=3, c=1
# y = ax**2 + 2bx + c
# x是变量，数值为1
# 求x的导数  所有偏导结果
import tensorflow as tf
a = tf.constant(1, dtype=tf.float32)
b = tf.constant(3, dtype=tf.float32)
c = tf.constant(1, dtype=tf.float32)
x = tf.Variable(1, dtype=tf.float32)


with tf.GradientTape() as tape:
    tape.watch([a, b, c]) # 处理三项的偏导值
    y = a * x ** 2 + 2 * b * x + c # 公式需要放到梯度磁带中

dy_dx, dy_da, dy_db, dy_dc = tape.gradient(y, [x, a,b,c])
tf.print(dy_dx)
tf.print(dy_da)
tf.print(dy_db)
tf.print(dy_dc)